﻿using System;
using System.Diagnostics;
using System.IO;
using System.Windows.Forms;
using DCS.CalculationClient.Properties;

namespace DCS.CalculationClient
{
    public static class Generator
    {
        private const string GeneratorName = "Generator.exe";

        public static string GetCommandLineArguments(string directory, uint portionNumber, uint totalPortions, string additionalArgs)
        {
            // Создаем новый объект процесса                
            
            var process = new Process
                              {
                                  StartInfo =
                                      {
                                          // Зададем приложение для запуска            
                                          FileName = Path.Combine(directory, GeneratorName),

                                          // Задаем аргументы приложения            
                                          Arguments = string.Format("{0} {1} {2}", portionNumber, totalPortions, additionalArgs),

                                          // Перенаправляем поток вывода
                                          UseShellExecute = false,
                                          RedirectStandardOutput = true,

                                          // Скрываем окно приложения
                                          WindowStyle = ProcessWindowStyle.Hidden,
                                          CreateNoWindow = true,
                                          //устанавливаем рабочую директорию
                                          WorkingDirectory = directory
                                      }
                              };


            var output = "";

            try
            {
                // Запускаем приложение
                process.Start();
                output = process.StandardOutput.ReadToEnd();

                // Ожидаем окончания работы приложения
                process.WaitForExit();
            }
            catch (Exception exc)
            {
                MessageBox.Show(Resources.GeneraorException + exc.Message);
            }


            return output;
        }
    }
}